package com.systemdevelopment.mainproject.View.demo;

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellEditEvent;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.io.IOException;

public class HelloApplication extends Application {

    private final TableView<Person> table = new TableView<>();
    private final ObservableList<Person> data =
            FXCollections.observableArrayList(
                    new Person("A", "B"),
                    new Person("C", "D"));

    private Pane loginPane;
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) {
        Scene scene = new Scene(new Group());
        stage.setWidth(450);
        stage.setHeight(550);


        FXMLLoader loader= new FXMLLoader(getClass().getResource("loginScene.fxml"));
        try {
            loginPane= loader.load();
        } catch (IOException e) {
            e.printStackTrace();
        }

        table.setEditable(true);

        TableColumn<Person, String> firstNameCol =
                new TableColumn<>("First Name");
        firstNameCol.setMinWidth(100);
        firstNameCol.setCellValueFactory(
                new PropertyValueFactory<>("firstName"));

        firstNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
        firstNameCol.setOnEditCommit(
                (CellEditEvent<Person, String> t) -> {
                    t.getTableView().getItems().get(
                            t.getTablePosition().getRow()).setFirstName(t.getNewValue());
                });


        TableColumn<Person, String> lastNameCol =
                new TableColumn<>("Last Name");
        lastNameCol.setMinWidth(100);
        lastNameCol.setCellValueFactory(
                new PropertyValueFactory<>("lastName"));
        lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
        lastNameCol.setOnEditCommit(
                (CellEditEvent<Person, String> t) -> {
                    t.getTableView().getItems().get(
                            t.getTablePosition().getRow()).setLastName(t.getNewValue());
                });
        table.setItems(data);
        table.getColumns().addAll(firstNameCol, lastNameCol);

        final VBox vbox = new VBox();
        vbox.setSpacing(5);
        vbox.setPadding(new Insets(10, 0, 0, 10));
        vbox.getChildren().addAll( table);
        vbox.getChildren().addAll(loginPane);
        ((Group) scene.getRoot()).getChildren().addAll(vbox);

        stage.setScene(scene);
        stage.show();
    }

    public static class Person {
        private  String firstName;
        private  String lastName;

        private Person(String fName, String lName) {
            this.firstName =  fName;
            this.lastName =  lName;
        }

        public String getFirstName() {
            return firstName;
        }

        public void setFirstName(String fName) {
            firstName=fName;
        }

        public String getLastName() {
            return lastName;
        }

        public void setLastName(String fName) {
            lastName=fName;
        }
    }
}
